#ifndef USERDAO_H
#define USERDAO_H

#include <QCache>
#include <QList>

#include "../pojo/user.h"
#include "../qls_specification.h"

class QLS_DB_MANAGER_EXPORT UserDao
{
public:
    UserDao();

    /* 查找 */
    User *findOne(const quint32 &id);
    User *findOne(const QLsSpecification &spec);

    QList<User> findAll(const QLsSpecification &spec);

    /* 保存 */
    void save(const User *user);

    /* 删除 */
    void del(const quint32 &id);

    /* 查询表是否存在 */
    bool exists(const QString &databaseType);

    /* 创建表 */
    void CreateTable(const QString &databaseType);

private:
    /* 单条记录缓存，key:"id"，value:"User" */
    static QCache<QString, User> userCache;
    /* 缓存多条记录，key:"方法名+参数"，value：user列表 */
    static QCache<QString, QList<User>> usersCache;
};

#endif // USERDAO_H
